过拟合和欠拟合问题
在搭建模型的过程来看,可以看作是优化与泛化过程。优化(Optimization) 是解决模型训练过程中在训练数据上表现出的较佳性能,而泛化(Generalization) 是体现模型用于解决实际的问题的性能。两者较难都达到最佳性能,两者的差异化表现可以即是过拟合和欠拟合。
1. 过拟合和欠拟合
欠拟合,指模型在训练数据上性能表现不好,同时在新数据上表现不佳。过拟合,指模型在训练数据上性能表现良好,但是对新数据上表现不佳。对于过拟合和欠拟合的认知,可以从一般和特例的关系来思考——将特例情况当作样本的一般情况时,就是过拟合的情况;如果完全没有学到数据的一般特点,出现“一叶障目”的情况时就是欠拟合。将过拟合和欠拟合,在机器学习中是非常常见的问题,是训练模型过程中特别需要注意的。一般的解决该问题的思路是通过增加数据量,调节模型等方式进行优化。
2. 模型优化
模型优化的角度,除了增加使用数据量对方法外还有对结构风险调整的方案,训练策略的调整等方式。
2.1 正则化
正则化是应用于降低过拟合的方法,是用于调整模型结构风险的方式。例如在线性回归算法中岭回归、LASSO 以及弹性网络的算法,就是在模型使用了 L1 和 L2 范数正则。而在深度学习中,对模型权重添加权重正则的方式也是通过范数调整;此外模型中添加 Dropout 的方式,以一定概率屏蔽某些节点等也是正则化的一种。
2.2 交叉验证
交叉验证是模型选择的一种策略,将模型训练数据和验证数据拆分,以提前验证模型泛化能力。交叉验证的方法包括:
- 简单交叉验证,单次使用数据拆分为训练数据和测试数据的方式,用测试数据评价模型效果
- K-Fold 验证,将数据随机分为 K 份数据,使用 K-1 组数据进行训练,使用其中一组数据进行测试的方法。这样模型就有 K 中可能的训练方式,将验证结果取平均值用于筛选模型
- 留一法,是 K Fold 的特例,直接使用 1 份数据进行验证,其他作为训练。这种方式优点是不受数据随机影响,更能够学习到数据的一般特点,相应的增加了模型训练的时间消耗——因为有多少个数据就需要进行多少次训练。因此该方法可以用于小样本数据中